
process.exe:     file format elf64-x86-64


Disassembly of section .init:

0000000000400540 <_init>:
  400540:	48 83 ec 08          	sub    $0x8,%rsp
  400544:	48 8b 05 ad 0a 20 00 	mov    0x200aad(%rip),%rax        # 600ff8 <__gmon_start__>
  40054b:	48 85 c0             	test   %rax,%rax
  40054e:	74 05                	je     400555 <_init+0x15>
  400550:	e8 6b 00 00 00       	callq  4005c0 <__gmon_start__@plt>
  400555:	48 83 c4 08          	add    $0x8,%rsp
  400559:	c3                   	retq   

Disassembly of section .plt:

0000000000400560 <.plt>:
  400560:	ff 35 a2 0a 20 00    	pushq  0x200aa2(%rip)        # 601008 <_GLOBAL_OFFSET_TABLE_+0x8>
  400566:	ff 25 a4 0a 20 00    	jmpq   *0x200aa4(%rip)        # 601010 <_GLOBAL_OFFSET_TABLE_+0x10>
  40056c:	0f 1f 40 00          	nopl   0x0(%rax)

0000000000400570 <putchar@plt>:
  400570:	ff 25 a2 0a 20 00    	jmpq   *0x200aa2(%rip)        # 601018 <putchar@GLIBC_2.2.5>
  400576:	68 00 00 00 00       	pushq  $0x0
  40057b:	e9 e0 ff ff ff       	jmpq   400560 <.plt>

0000000000400580 <strlen@plt>:
  400580:	ff 25 9a 0a 20 00    	jmpq   *0x200a9a(%rip)        # 601020 <strlen@GLIBC_2.2.5>
  400586:	68 01 00 00 00       	pushq  $0x1
  40058b:	e9 d0 ff ff ff       	jmpq   400560 <.plt>

0000000000400590 <printf@plt>:
  400590:	ff 25 92 0a 20 00    	jmpq   *0x200a92(%rip)        # 601028 <printf@GLIBC_2.2.5>
  400596:	68 02 00 00 00       	pushq  $0x2
  40059b:	e9 c0 ff ff ff       	jmpq   400560 <.plt>

00000000004005a0 <memset@plt>:
  4005a0:	ff 25 8a 0a 20 00    	jmpq   *0x200a8a(%rip)        # 601030 <memset@GLIBC_2.2.5>
  4005a6:	68 03 00 00 00       	pushq  $0x3
  4005ab:	e9 b0 ff ff ff       	jmpq   400560 <.plt>

00000000004005b0 <__libc_start_main@plt>:
  4005b0:	ff 25 82 0a 20 00    	jmpq   *0x200a82(%rip)        # 601038 <__libc_start_main@GLIBC_2.2.5>
  4005b6:	68 04 00 00 00       	pushq  $0x4
  4005bb:	e9 a0 ff ff ff       	jmpq   400560 <.plt>

00000000004005c0 <__gmon_start__@plt>:
  4005c0:	ff 25 7a 0a 20 00    	jmpq   *0x200a7a(%rip)        # 601040 <__gmon_start__>
  4005c6:	68 05 00 00 00       	pushq  $0x5
  4005cb:	e9 90 ff ff ff       	jmpq   400560 <.plt>

00000000004005d0 <fflush@plt>:
  4005d0:	ff 25 72 0a 20 00    	jmpq   *0x200a72(%rip)        # 601048 <fflush@GLIBC_2.2.5>
  4005d6:	68 06 00 00 00       	pushq  $0x6
  4005db:	e9 80 ff ff ff       	jmpq   400560 <.plt>

00000000004005e0 <usleep@plt>:
  4005e0:	ff 25 6a 0a 20 00    	jmpq   *0x200a6a(%rip)        # 601050 <usleep@GLIBC_2.2.5>
  4005e6:	68 07 00 00 00       	pushq  $0x7
  4005eb:	e9 70 ff ff ff       	jmpq   400560 <.plt>

Disassembly of section .text:

00000000004005f0 <_start>:
  4005f0:	31 ed                	xor    %ebp,%ebp
  4005f2:	49 89 d1             	mov    %rdx,%r9
  4005f5:	5e                   	pop    %rsi
  4005f6:	48 89 e2             	mov    %rsp,%rdx
  4005f9:	48 83 e4 f0          	and    $0xfffffffffffffff0,%rsp
  4005fd:	50                   	push   %rax
  4005fe:	54                   	push   %rsp
  4005ff:	49 c7 c0 80 09 40 00 	mov    $0x400980,%r8
  400606:	48 c7 c1 10 09 40 00 	mov    $0x400910,%rcx
  40060d:	48 c7 c7 fb 08 40 00 	mov    $0x4008fb,%rdi
  400614:	e8 97 ff ff ff       	callq  4005b0 <__libc_start_main@plt>
  400619:	f4                   	hlt    
  40061a:	66 0f 1f 44 00 00    	nopw   0x0(%rax,%rax,1)

0000000000400620 <deregister_tm_clones>:
  400620:	b8 77 10 60 00       	mov    $0x601077,%eax
  400625:	55                   	push   %rbp
  400626:	48 2d 70 10 60 00    	sub    $0x601070,%rax
  40062c:	48 83 f8 0e          	cmp    $0xe,%rax
  400630:	48 89 e5             	mov    %rsp,%rbp
  400633:	77 02                	ja     400637 <deregister_tm_clones+0x17>
  400635:	5d                   	pop    %rbp
  400636:	c3                   	retq   
  400637:	b8 00 00 00 00       	mov    $0x0,%eax
  40063c:	48 85 c0             	test   %rax,%rax
  40063f:	74 f4                	je     400635 <deregister_tm_clones+0x15>
  400641:	5d                   	pop    %rbp
  400642:	bf 70 10 60 00       	mov    $0x601070,%edi
  400647:	ff e0                	jmpq   *%rax
  400649:	0f 1f 80 00 00 00 00 	nopl   0x0(%rax)

0000000000400650 <register_tm_clones>:
  400650:	b8 70 10 60 00       	mov    $0x601070,%eax
  400655:	55                   	push   %rbp
  400656:	48 2d 70 10 60 00    	sub    $0x601070,%rax
  40065c:	48 c1 f8 03          	sar    $0x3,%rax
  400660:	48 89 e5             	mov    %rsp,%rbp
  400663:	48 89 c2             	mov    %rax,%rdx
  400666:	48 c1 ea 3f          	shr    $0x3f,%rdx
  40066a:	48 01 d0             	add    %rdx,%rax
  40066d:	48 d1 f8             	sar    %rax
  400670:	75 02                	jne    400674 <register_tm_clones+0x24>
  400672:	5d                   	pop    %rbp
  400673:	c3                   	retq   
  400674:	ba 00 00 00 00       	mov    $0x0,%edx
  400679:	48 85 d2             	test   %rdx,%rdx
  40067c:	74 f4                	je     400672 <register_tm_clones+0x22>
  40067e:	5d                   	pop    %rbp
  40067f:	48 89 c6             	mov    %rax,%rsi
  400682:	bf 70 10 60 00       	mov    $0x601070,%edi
  400687:	ff e2                	jmpq   *%rdx
  400689:	0f 1f 80 00 00 00 00 	nopl   0x0(%rax)

0000000000400690 <__do_global_dtors_aux>:
  400690:	80 3d e1 09 20 00 00 	cmpb   $0x0,0x2009e1(%rip)        # 601078 <completed.6355>
  400697:	75 11                	jne    4006aa <__do_global_dtors_aux+0x1a>
  400699:	55                   	push   %rbp
  40069a:	48 89 e5             	mov    %rsp,%rbp
  40069d:	e8 7e ff ff ff       	callq  400620 <deregister_tm_clones>
  4006a2:	5d                   	pop    %rbp
  4006a3:	c6 05 ce 09 20 00 01 	movb   $0x1,0x2009ce(%rip)        # 601078 <completed.6355>
  4006aa:	f3 c3                	repz retq 
  4006ac:	0f 1f 40 00          	nopl   0x0(%rax)

00000000004006b0 <frame_dummy>:
  4006b0:	48 83 3d 68 07 20 00 	cmpq   $0x0,0x200768(%rip)        # 600e20 <__JCR_END__>
  4006b7:	00 
  4006b8:	74 1e                	je     4006d8 <frame_dummy+0x28>
  4006ba:	b8 00 00 00 00       	mov    $0x0,%eax
  4006bf:	48 85 c0             	test   %rax,%rax
  4006c2:	74 14                	je     4006d8 <frame_dummy+0x28>
  4006c4:	55                   	push   %rbp
  4006c5:	bf 20 0e 60 00       	mov    $0x600e20,%edi
  4006ca:	48 89 e5             	mov    %rsp,%rbp
  4006cd:	ff d0                	callq  *%rax
  4006cf:	5d                   	pop    %rbp
  4006d0:	e9 7b ff ff ff       	jmpq   400650 <register_tm_clones>
  4006d5:	0f 1f 00             	nopl   (%rax)
  4006d8:	e9 73 ff ff ff       	jmpq   400650 <register_tm_clones>

00000000004006dd <FFlushProcess>:

#define NUM 101
#define SSTYLE '='

void FFlushProcess(double current, double total)
{
  4006dd:	55                   	push   %rbp
  4006de:	48 89 e5             	mov    %rsp,%rbp
  4006e1:	48 81 ec a0 00 00 00 	sub    $0xa0,%rsp
  4006e8:	f2 0f 11 85 68 ff ff 	movsd  %xmm0,-0x98(%rbp)
  4006ef:	ff 
  4006f0:	f2 0f 11 8d 60 ff ff 	movsd  %xmm1,-0xa0(%rbp)
  4006f7:	ff 
  char buffer[NUM];
  memset(buffer, 0, sizeof(buffer));
  4006f8:	48 8d 85 70 ff ff ff 	lea    -0x90(%rbp),%rax
  4006ff:	ba 65 00 00 00       	mov    $0x65,%edx
  400704:	be 00 00 00 00       	mov    $0x0,%esi
  400709:	48 89 c7             	mov    %rax,%rdi
  40070c:	e8 8f fe ff ff       	callq  4005a0 <memset@plt>

  const char* lable = "|\\-/";
  400711:	48 c7 45 f0 a0 09 40 	movq   $0x4009a0,-0x10(%rbp)
  400718:	00 
  int len = strlen(lable);
  400719:	48 8b 45 f0          	mov    -0x10(%rbp),%rax
  40071d:	48 89 c7             	mov    %rax,%rdi
  400720:	e8 5b fe ff ff       	callq  400580 <strlen@plt>
  400725:	89 45 ec             	mov    %eax,-0x14(%rbp)
  double rate = current / total;
  400728:	f2 0f 10 85 68 ff ff 	movsd  -0x98(%rbp),%xmm0
  40072f:	ff 
  400730:	f2 0f 5e 85 60 ff ff 	divsd  -0xa0(%rbp),%xmm0
  400737:	ff 
  400738:	f2 0f 11 45 e0       	movsd  %xmm0,-0x20(%rbp)
  int cnt = rate * 100;
  40073d:	f2 0f 10 4d e0       	movsd  -0x20(%rbp),%xmm1
  400742:	f2 0f 10 05 8e 02 00 	movsd  0x28e(%rip),%xmm0        # 4009d8 <__dso_handle+0x40>
  400749:	00 
  40074a:	f2 0f 59 c1          	mulsd  %xmm1,%xmm0
  40074e:	f2 0f 2c c0          	cvttsd2si %xmm0,%eax
  400752:	89 45 dc             	mov    %eax,-0x24(%rbp)
  
  int i = 0;
  400755:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%rbp)
  for(;i < cnt; i++)
  40075c:	eb 11                	jmp    40076f <FFlushProcess+0x92>
  {
    buffer[i] = SSTYLE;
  40075e:	8b 45 fc             	mov    -0x4(%rbp),%eax
  400761:	48 98                	cltq   
  400763:	c6 84 05 70 ff ff ff 	movb   $0x3d,-0x90(%rbp,%rax,1)
  40076a:	3d 
  for(;i < cnt; i++)
  40076b:	83 45 fc 01          	addl   $0x1,-0x4(%rbp)
  40076f:	8b 45 fc             	mov    -0x4(%rbp),%eax
  400772:	3b 45 dc             	cmp    -0x24(%rbp),%eax
  400775:	7c e7                	jl     40075e <FFlushProcess+0x81>
  }
  printf("[%-100s][%lf%%][%c]\r", buffer, rate*100, lable[cnt%len]);
  400777:	8b 45 dc             	mov    -0x24(%rbp),%eax
  40077a:	99                   	cltd   
  40077b:	f7 7d ec             	idivl  -0x14(%rbp)
  40077e:	89 d0                	mov    %edx,%eax
  400780:	48 63 d0             	movslq %eax,%rdx
  400783:	48 8b 45 f0          	mov    -0x10(%rbp),%rax
  400787:	48 01 d0             	add    %rdx,%rax
  40078a:	0f b6 00             	movzbl (%rax),%eax
  40078d:	0f be d0             	movsbl %al,%edx
  400790:	f2 0f 10 4d e0       	movsd  -0x20(%rbp),%xmm1
  400795:	f2 0f 10 05 3b 02 00 	movsd  0x23b(%rip),%xmm0        # 4009d8 <__dso_handle+0x40>
  40079c:	00 
  40079d:	f2 0f 59 c1          	mulsd  %xmm1,%xmm0
  4007a1:	48 8d 85 70 ff ff ff 	lea    -0x90(%rbp),%rax
  4007a8:	48 89 c6             	mov    %rax,%rsi
  4007ab:	bf a5 09 40 00       	mov    $0x4009a5,%edi
  4007b0:	b8 01 00 00 00       	mov    $0x1,%eax
  4007b5:	e8 d6 fd ff ff       	callq  400590 <printf@plt>
  fflush(stdout);
  4007ba:	48 8b 05 af 08 20 00 	mov    0x2008af(%rip),%rax        # 601070 <stdout@@GLIBC_2.2.5>
  4007c1:	48 89 c7             	mov    %rax,%rdi
  4007c4:	e8 07 fe ff ff       	callq  4005d0 <fflush@plt>
}
  4007c9:	c9                   	leaveq 
  4007ca:	c3                   	retq   

00000000004007cb <prcess_v1>:

void prcess_v1()
{
  4007cb:	55                   	push   %rbp
  4007cc:	48 89 e5             	mov    %rsp,%rbp
  4007cf:	48 83 c4 80          	add    $0xffffffffffffff80,%rsp
  char buffer[NUM];
  memset(buffer, 0, sizeof(buffer));
  4007d3:	48 8d 45 80          	lea    -0x80(%rbp),%rax
  4007d7:	ba 65 00 00 00       	mov    $0x65,%edx
  4007dc:	be 00 00 00 00       	mov    $0x0,%esi
  4007e1:	48 89 c7             	mov    %rax,%rdi
  4007e4:	e8 b7 fd ff ff       	callq  4005a0 <memset@plt>
  char* lable = "|/-\\";
  4007e9:	48 c7 45 f0 ba 09 40 	movq   $0x4009ba,-0x10(%rbp)
  4007f0:	00 
  int len = strlen(lable);
  4007f1:	48 8b 45 f0          	mov    -0x10(%rbp),%rax
  4007f5:	48 89 c7             	mov    %rax,%rdi
  4007f8:	e8 83 fd ff ff       	callq  400580 <strlen@plt>
  4007fd:	89 45 ec             	mov    %eax,-0x14(%rbp)
  int cnt = 0;
  400800:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%rbp)
  while(cnt <= 100)
  400807:	eb 59                	jmp    400862 <prcess_v1+0x97>
  {
    printf("[%-100s][%d%%][%c]\r", buffer, cnt, lable[cnt%len]);
  400809:	8b 45 fc             	mov    -0x4(%rbp),%eax
  40080c:	99                   	cltd   
  40080d:	f7 7d ec             	idivl  -0x14(%rbp)
  400810:	89 d0                	mov    %edx,%eax
  400812:	48 63 d0             	movslq %eax,%rdx
  400815:	48 8b 45 f0          	mov    -0x10(%rbp),%rax
  400819:	48 01 d0             	add    %rdx,%rax
  40081c:	0f b6 00             	movzbl (%rax),%eax
  40081f:	0f be c8             	movsbl %al,%ecx
  400822:	8b 55 fc             	mov    -0x4(%rbp),%edx
  400825:	48 8d 45 80          	lea    -0x80(%rbp),%rax
  400829:	48 89 c6             	mov    %rax,%rsi
  40082c:	bf bf 09 40 00       	mov    $0x4009bf,%edi
  400831:	b8 00 00 00 00       	mov    $0x0,%eax
  400836:	e8 55 fd ff ff       	callq  400590 <printf@plt>
    fflush(stdout);
  40083b:	48 8b 05 2e 08 20 00 	mov    0x20082e(%rip),%rax        # 601070 <stdout@@GLIBC_2.2.5>
  400842:	48 89 c7             	mov    %rax,%rdi
  400845:	e8 86 fd ff ff       	callq  4005d0 <fflush@plt>
    buffer[cnt] = SSTYLE;
  40084a:	8b 45 fc             	mov    -0x4(%rbp),%eax
  40084d:	48 98                	cltq   
  40084f:	c6 44 05 80 3d       	movb   $0x3d,-0x80(%rbp,%rax,1)
    cnt++;
  400854:	83 45 fc 01          	addl   $0x1,-0x4(%rbp)
    usleep(3000);
  400858:	bf b8 0b 00 00       	mov    $0xbb8,%edi
  40085d:	e8 7e fd ff ff       	callq  4005e0 <usleep@plt>
  while(cnt <= 100)
  400862:	83 7d fc 64          	cmpl   $0x64,-0x4(%rbp)
  400866:	7e a1                	jle    400809 <prcess_v1+0x3e>
  }
  printf("\n");
  400868:	bf 0a 00 00 00       	mov    $0xa,%edi
  40086d:	e8 fe fc ff ff       	callq  400570 <putchar@plt>
}
  400872:	c9                   	leaveq 
  400873:	c3                   	retq   

0000000000400874 <DownLoad>:

double speed = 1.0;
double total = 1024.0;

void DownLoad() 
{ 
  400874:	55                   	push   %rbp
  400875:	48 89 e5             	mov    %rsp,%rbp
  400878:	48 83 ec 20          	sub    $0x20,%rsp
  double current = 0;
  40087c:	b8 00 00 00 00       	mov    $0x0,%eax
  400881:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
  while(current <= total)
  400885:	eb 47                	jmp    4008ce <DownLoad+0x5a>
  {
    FFlushProcess(current, total);
  400887:	48 8b 15 da 07 20 00 	mov    0x2007da(%rip),%rdx        # 601068 <total>
  40088e:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
  400892:	48 89 55 e8          	mov    %rdx,-0x18(%rbp)
  400896:	f2 0f 10 4d e8       	movsd  -0x18(%rbp),%xmm1
  40089b:	48 89 45 e8          	mov    %rax,-0x18(%rbp)
  40089f:	f2 0f 10 45 e8       	movsd  -0x18(%rbp),%xmm0
  4008a4:	e8 34 fe ff ff       	callq  4006dd <FFlushProcess>
    usleep(3000);   //下载的数据 
  4008a9:	bf b8 0b 00 00       	mov    $0xbb8,%edi
  4008ae:	b8 00 00 00 00       	mov    $0x0,%eax
  4008b3:	e8 28 fd ff ff       	callq  4005e0 <usleep@plt>
    current += speed;
  4008b8:	f2 0f 10 05 a0 07 20 	movsd  0x2007a0(%rip),%xmm0        # 601060 <speed>
  4008bf:	00 
  4008c0:	f2 0f 10 4d f8       	movsd  -0x8(%rbp),%xmm1
  4008c5:	f2 0f 58 c1          	addsd  %xmm1,%xmm0
  4008c9:	f2 0f 11 45 f8       	movsd  %xmm0,-0x8(%rbp)
  while(current <= total)
  4008ce:	f2 0f 10 05 92 07 20 	movsd  0x200792(%rip),%xmm0        # 601068 <total>
  4008d5:	00 
  4008d6:	66 0f 2e 45 f8       	ucomisd -0x8(%rbp),%xmm0
  4008db:	73 aa                	jae    400887 <DownLoad+0x13>
  }
  printf("\ndownload %.2lfMB Done\n", current);
  4008dd:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
  4008e1:	48 89 45 e8          	mov    %rax,-0x18(%rbp)
  4008e5:	f2 0f 10 45 e8       	movsd  -0x18(%rbp),%xmm0
  4008ea:	bf e0 09 40 00       	mov    $0x4009e0,%edi
  4008ef:	b8 01 00 00 00       	mov    $0x1,%eax
  4008f4:	e8 97 fc ff ff       	callq  400590 <printf@plt>

}
  4008f9:	c9                   	leaveq 
  4008fa:	c3                   	retq   

00000000004008fb <main>:

int main()
{
  4008fb:	55                   	push   %rbp
  4008fc:	48 89 e5             	mov    %rsp,%rbp
  //DownLoad();
  prcess_v1();
  4008ff:	b8 00 00 00 00       	mov    $0x0,%eax
  400904:	e8 c2 fe ff ff       	callq  4007cb <prcess_v1>
  return 0;
  400909:	b8 00 00 00 00       	mov    $0x0,%eax
}
  40090e:	5d                   	pop    %rbp
  40090f:	c3                   	retq   

0000000000400910 <__libc_csu_init>:
  400910:	41 57                	push   %r15
  400912:	41 89 ff             	mov    %edi,%r15d
  400915:	41 56                	push   %r14
  400917:	49 89 f6             	mov    %rsi,%r14
  40091a:	41 55                	push   %r13
  40091c:	49 89 d5             	mov    %rdx,%r13
  40091f:	41 54                	push   %r12
  400921:	4c 8d 25 e8 04 20 00 	lea    0x2004e8(%rip),%r12        # 600e10 <__frame_dummy_init_array_entry>
  400928:	55                   	push   %rbp
  400929:	48 8d 2d e8 04 20 00 	lea    0x2004e8(%rip),%rbp        # 600e18 <__init_array_end>
  400930:	53                   	push   %rbx
  400931:	4c 29 e5             	sub    %r12,%rbp
  400934:	31 db                	xor    %ebx,%ebx
  400936:	48 c1 fd 03          	sar    $0x3,%rbp
  40093a:	48 83 ec 08          	sub    $0x8,%rsp
  40093e:	e8 fd fb ff ff       	callq  400540 <_init>
  400943:	48 85 ed             	test   %rbp,%rbp
  400946:	74 1e                	je     400966 <__libc_csu_init+0x56>
  400948:	0f 1f 84 00 00 00 00 	nopl   0x0(%rax,%rax,1)
  40094f:	00 
  400950:	4c 89 ea             	mov    %r13,%rdx
  400953:	4c 89 f6             	mov    %r14,%rsi
  400956:	44 89 ff             	mov    %r15d,%edi
  400959:	41 ff 14 dc          	callq  *(%r12,%rbx,8)
  40095d:	48 83 c3 01          	add    $0x1,%rbx
  400961:	48 39 eb             	cmp    %rbp,%rbx
  400964:	75 ea                	jne    400950 <__libc_csu_init+0x40>
  400966:	48 83 c4 08          	add    $0x8,%rsp
  40096a:	5b                   	pop    %rbx
  40096b:	5d                   	pop    %rbp
  40096c:	41 5c                	pop    %r12
  40096e:	41 5d                	pop    %r13
  400970:	41 5e                	pop    %r14
  400972:	41 5f                	pop    %r15
  400974:	c3                   	retq   
  400975:	90                   	nop
  400976:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
  40097d:	00 00 00 

0000000000400980 <__libc_csu_fini>:
  400980:	f3 c3                	repz retq 

Disassembly of section .fini:

0000000000400984 <_fini>:
  400984:	48 83 ec 08          	sub    $0x8,%rsp
  400988:	48 83 c4 08          	add    $0x8,%rsp
  40098c:	c3                   	retq   
